package model;

/**
 * интерфейс реализующий субъект при использовании парадигмы MVC
 * @version 1.0
 */
public interface InterfaceObservable {
    /**
     * Добавление нового наблюдателя
     * @param o Наблюдатель
     */
    void addObserver(InterfaceObserver o);    
    /**
     * Оповещение наблюдетелей о добавлении рейса
     * @param newFlight Добавленный рейс
     */
    void notifyObserversAddFlight(Flight newFlight);
    /**
     * Оповещение наблюдетелей об удалении рейса
     * @param deleteFlights Удаленный рейс
     */
    void notifyObserversDeleteFlight(Flight deleteFlights);
    /**
     * Оповещение наблюдетелей о завершении поиска
     * @param allSearchingFlights Найденные элементы
     */
    void notifyObserversSearchComplete(Flights allSearchingFlights);
    
    /**
     * Оповещение наблюдателей об изменении полёта с данным индексом 
     * @param index Индекс
     * @param flightChanged Изменённый полёт
     */
    void notifyObserversUpdate(int index, Flight flightChanged);
}
